package br.com.sap.controle;

import java.util.Date;

import br.com.sap.modelo.AnuncioObjPerdido;
import br.com.sap.modelo.DenunciaObjPerdido;
import br.com.sap.modelo.Usuario;
import br.com.sap.modelo.enums.EnumSituacao;
import br.com.sap.persistencia.servico.AnuncioObjPerdidoServico;
import br.com.sap.persistencia.servico.DenunciaObjPerdidoServico;
import br.com.sap.persistencia.servico.ServicoGenerico;
import br.com.sap.persistencia.servico.UsuarioServico;

public class DenunciaObjPerdidoControle  extends ControleGenerico<DenunciaObjPerdido> {

	private DenunciaObjPerdidoServico denunciaObjPerdidoServico = new DenunciaObjPerdidoServico();
	private UsuarioServico usuarioServico = new UsuarioServico();
	private UsuarioControle usuarioControle = new UsuarioControle();
	private AnuncioObjPerdidoServico anuncioObjPerdidoServico = new AnuncioObjPerdidoServico();
	private AnuncioObjPerdidoControle anuncioObjPerdidoControle = new AnuncioObjPerdidoControle();
	private ControleGenerico<AnuncioObjPerdido> controleGenerico;

	public ControleGenerico<AnuncioObjPerdido> getControleGenerico() {
		return controleGenerico;
	}

	public void setControleGenerico(ControleGenerico<AnuncioObjPerdido> controleGenerico) {
		this.controleGenerico = controleGenerico;
	}
	
	@Override
	public ServicoGenerico<DenunciaObjPerdido> getServico() {
		// TODO Auto-generated method stub
		return this.denunciaObjPerdidoServico;
	}


	public UsuarioServico getUsuarioServico() {
		return usuarioServico;
	}


	public DenunciaObjPerdidoServico getDenunciaObjPerdidoServico() {
		return denunciaObjPerdidoServico;
	}


	public void setDenunciaObjPerdidoServico(
			DenunciaObjPerdidoServico denunciaObjPerdidoServico) {
		this.denunciaObjPerdidoServico = denunciaObjPerdidoServico;
	}


	public AnuncioObjPerdidoServico getAnuncioObjPerdidoServico() {
		return anuncioObjPerdidoServico;
	}


	public void setAnuncioObjPerdidoServico(
			AnuncioObjPerdidoServico anuncioObjPerdidoServico) {
		this.anuncioObjPerdidoServico = anuncioObjPerdidoServico;
	}


	public void setUsuarioServico(UsuarioServico usuarioServico) {
		this.usuarioServico = usuarioServico;
	}
	

	public AnuncioObjPerdidoControle getAnuncioObjPerdidoControle() {
		return anuncioObjPerdidoControle;
	}

	public void setAnuncioObjPerdidoControle(AnuncioObjPerdidoControle anuncioObjPerdidoControle) {
		this.anuncioObjPerdidoControle = anuncioObjPerdidoControle;
	}

	public UsuarioControle getUsuarioControle() {
		return usuarioControle;
	}

	public void setUsuarioControle(UsuarioControle usuarioControle) {
		this.usuarioControle = usuarioControle;
	}

	public int registrarDenunciaObjPerdido(String motivo, AnuncioObjPerdido anuncioObjPerdido, Usuario usuario){
		
		DenunciaObjPerdido denunciaObjPerdido = new DenunciaObjPerdido();
		int retorno;
		retorno = 0;		
		
		denunciaObjPerdido.setUsuarioDenunciado_id(anuncioObjPerdido.getUsuario());
		denunciaObjPerdido.setUsuario_id(usuario);
		denunciaObjPerdido.setAnuncioobjperdido_id(anuncioObjPerdido);
		denunciaObjPerdido.setSituacao(EnumSituacao.EXCLUIDO);
		denunciaObjPerdido.setStatus(0);
		denunciaObjPerdido.setMotivo(motivo); 
			if(denunciaObjPerdido.getId() != null){
				
			}{
				Date datadenuncia = new Date();
				denunciaObjPerdido.setHorario(datadenuncia);;
			}
			
			if(persiste(denunciaObjPerdido)){
				retorno = 1;
				}
		
				
		return retorno;
		
	}
	
	public boolean removerDenunciaObjPerdido(DenunciaObjPerdido denunciaObjPerdido, Usuario usuarioSessao){	
				boolean retorno;
				retorno = false;
					if(denunciaObjPerdido.getUsuario_id().getEmail() ==  usuarioSessao.getEmail()){
						denunciaObjPerdido.setStatus(0);
						if(persiste(denunciaObjPerdido)){
							retorno = true;
							}else{
							retorno = false;
							}
					
					}else{
						if(usuarioSessao.getTipo().getDescricao() == "ADMINISTRADOR"){
							denunciaObjPerdido.setStatus(0);
							if(persiste(denunciaObjPerdido)){
								retorno = true;
								}else{
								retorno = false;
								}
						}
					}
				return retorno;		
			}
	
	
	
			public boolean excluirUsuarioAnuncioObjPerdido(DenunciaObjPerdido denunciaObjPerdido){
				boolean retorno;
				retorno = false;
				
				Usuario usuariodenunciado = usuarioServico.getById(denunciaObjPerdido.getUsuarioDenunciado_id().getId());
				usuarioControle.remove(usuariodenunciado);
				
				return retorno;
			}
			
			public boolean excluirAnuncioObjPerdido(DenunciaObjPerdido denunciaObjPerdido){
				boolean retorno;
				retorno = false;
				
				//AnuncioObjPerdido
				//anuncioObjPerdidoControle.remove(anunciodenunciado);
				
				return retorno;
			}

}
